--------------------------------------------------------------------------
y  \tg   zHSPSHAD.dll
y o[W  z1.5
y         zpippi
y  KvP zWindowsXPȍ~i98/me/2000Ȃǂ͓s\j
y  KvQ zHSP Ver3.0ȍ~
y  KvR zDirectX9.0cȍ~
y  KvS zDirectX9.0cΉOtBbN{[h
			GeForce 6 Seriesȍ~				iGeForce 6 Series GeForce 7 Series GeForce 8 Series GeForce 9 Series GeForce 100 Series  GeForce 200 Series  GeForce 300 Series GeForce 400 Series GeForce 500 Series GeForce 600 Seriesj
			Radeon R500  (X1xxx)ȍ~			iR500  (X1xxx) R600  (HD 2xxx/HD 3xxx) R700  (HD 4xxx) Evergreen  (HD 5xxx) Northern Islands  (HD 6xxx) Southern Islands  (HD 7xxx)j
			Intel Graphics Media Accelerator GMA 950ȍ~	iGMA 950 GMA 3000 GMA X3000 GMA 3100 GMA X3100 GMA X3500 GMA 4500 GMA X4500 GMA 500 GMA 3150 GMA 3650/3600 HD Graphics HD Graphics 2000/3000 HD Graphics P3000 HD Graphics 2500/4000j
y  戵   zt[\tg
y    e     zHSP3pGPGPUvOC
y     HP      zhttp://blog.livedoor.jp/toropippi/
--------------------------------------------------------------------------

Tv

CXg[

gp@

ߒ`
#cmd SHADini 0x001
#cmd SHADCallUserShader 0x002
#cmd mcpyGPUtoCPU 0x003
#cmd mcpyCPUtoGPU 0x004
#cmd SHADCreateRenderTargetTexture 0x005
#cmd SHADShaderConstUserTex 0x006
#cmd buffercopy 0x007
#cmd DataGATAChange2 0x008
#cmd TexRelease 0x009
#cmd GetTexInfo 0x010
#cmd SHADSetFloat 0x011
#cmd SHADSetInt 0x012
#cmd SHADPresent 0x013
#cmd SHADbye 0x014
#cmd GetDevInfo 0x015


ߐ
[SHADini]
foCX


[SHADCallUserShader p1,p2,p3,p4,p5,p6]
p1 : [IN] ϐ܂́Al@F@shader no
p2 : [IN] ϐ܂́Al@F@pass no
p3 : [IN] ϐ܂́Al@F@scid
p4 : [IN] ϐ܂́Al@F@scid
p5 : [IN] ϐ܂́Al@F@scid
p6 : [IN] ϐ܂́Al@F@scid
VF[_[sB
p3Ɏw肵eNX`̑傫ƁAVF[_[̕GɔႵďԂȂB
p4,p5,p6͓_O^[Qbgw肵Ƃ̂ݎgpBʂ͏ȗB
iȗꍇΉ RenderTargetIndex ̃J[ obt@͖ɂȂBj
_O^[QbǵAp3x,ỹeNX`łȂ΂ȂBtH[}bg͈قȂĂǂBႤTCYw肷ƃVF[_sȂB
_O\^[Qbg̍ő吔GetDevInfoŎ擾łB܂_Ô߂ɂHLSL̋LqȂ̂ƂȂBiTvQƁj



[mcpyGPUtoCPU p1,p2]
p1 : [OUT] zϐA^͂Ȃł
p2 : [IN] ϐ܂́Al@F@scid
SHADCreateRenderTargetTextureō쐬ԃeNX`AzϐɃf[^]
i߂̖OɔĂĂ邱Ƃ͂̓zXgEzXgԂ̓]BԂ͂ȂɒBf[^̑傫ɔj


[mcpyCPUtoGPU p1,p2]
p1 : [IN] ϐ܂́Al@F@scid
p2 : [IN] zϐA^͂Ȃł
SHADCreateRenderTargetTextureō쐬ԃeNX`ɁAzϐf[^]
i߂̖OɔĂĂ邱Ƃ͂̓zXgEzXgԂ̓]BԂ͂ȂɒBԂ̓f[^̑傫ɔj




[SHADCreateRenderTargetTexture p1,p2,p3,p4,p5]
p1 : [OUT] ϐ   :  scid
p2 : [IN] ϐ܂́Al   :   x
p3 : [IN] ϐ܂́Al   :   y
p4 : [IN] ϐ܂́Al   :   D3DFMT_????
p5 : [IN] ϐ܂́Al   :   0 or 1
GPUŌvZ\ȃeNX`B
p1ɑꂽlA쐬ꂽeNX`idƂȂBVF[_[֘A̖߂Ŏgscid͂̃eNX`idƂȂB
p2̓eNX`xTCYisNZj
p3̓eNX`yTCYisNZj
p4̓tH[}bgwBD3DFMT_A32B32G32R32FȂǁBtH[}bgɂẮutH[}bgvQ
p501B0Ń_O\eNX`A1ŒԃeNX`
ԃeNX`ƂCPUGPŮԂŃf[^̂肪łB_O͂łȂB

eNX`쐬΁AVXeϐstat0B}CiXlŃG[B
G[̎ނ́AG[R[h̊i[ꂽ^zϐuSHAD_STAT_ERROR_STR_ARRAYvłǂ̂悤ȃG[B

mes SHAD_STAT_ERROR_STR_ARRAY.abs(stat)

G[ڍׂ́uG[R[hvQƁB

悭G[ŁAsB
p50ō쐬ꂽꍇ̓OtBbNJ[h̃ifoCXj
1̏ꍇ̓CizXgj̂ŁAꂼ̃̏lȂeNX`쐬KvB
rfIȂm[gp\RȂǂł̓foCX̑ɃzXgB

Ԃ͂قƂǂȂB
eNX`́uTexReleasev




[SHADShaderConstUserTex p1,p2]
p1 : [IN] ϐ܂́Al   :   datano
p2 : [IN] ϐ܂́Al   :   scid
gpgpu.fx̃f[^gputex00`gputex31̂ǂꂩɎw肵eNX`ZbgB
p1ɂ0`31̐lB
p2ɂ̓ZbgeNX`idB
Ԃ͂قږɓB




[buffercopy p1,p2]
p1 : [IN] ϐ܂́Al   :   scid
p2 : [IN] ϐ܂́Al   :   scid
p1̃eNX`p2̃eNX`Rs[B
ԃeNX`ƃ_O\eNX`Ƃ̑݃f[^]\ɂ邽߂̖߁B
izXgEfoCXԂł̃f[^]BԂ̓eNX`̑傫ɔBj



[DataGATAChange p1,p2,p3,p4]
p1 : [OUT] zϐA^͂Ȃł
p2 : [IN] zϐA^͂Ȃł
p3 : [IN] ϐ܂́Al   :   int
p4 : [IN] ϐ܂́Al   :   int
f[^^̔zϐׂĎw̃f[^^ɕϊB
p1 ϊ(zϐ)
p2 ϊ(zϐ)
p3 ϊ̌^(0-5)
p4 ϊ̌^(0-5)
p3,p4̒l͈ȉQƁB

16bit_(half)			:	0
32bit_(float)			:	1
64bit_(double)			:	2
8bitȂ(unsigned char)		:	3
16bitȂ(unsigned short)	:	4
32bit(int)			:	5

Ⴆ΁ASHADCreateRenderTargetTexture32bit floateNX`쐬ƂAmcpyCPUtoGPUőf[^^doubleint
sNZVF[_[ŌvZƂɂ́A߂ႭȒlƂȂĂBf[^^킹ȂΐvZłȂB
̂悤ȏꍇA\߂̖߂gĕϊĂKvB
ɂ̓f[^^ł͂Ȃf[^\݂̂厖BȂ̂p1,p2Ŏw肵zϐ́Ȁ(dim  ddim Asdim )@͖ȂB

zϐŜ̃TCYɂ͒
double  float ϊłp1̃TCYp2̂Q1̃TCYłȂƂȂB

Ԃ̓f[^̃TCYɔB




[TexRelease p1]
p1 : [IN] ϐ܂́Al   :   scid
w肵eNX`B
ISHADbyełÃeNX`͉B

Ԃ͊FB




[GetTexInfo p1,p2]
p1 : [OUT] ϐ   :   int
p2 : [IN] ϐ܂́Al   :   scid
p3 : [IN] ϐ܂́Al   :   no
scid̃eNX`̏擾
p3ɂĎ擾łwłBӖ͈ȉ̂ƂB
0 //̃eNX`̎ށBO_[APԃeNX`
1 //̃eNX`̃tH[}bg
2 //TCY
3 //cTCY
4 //1hbg̃TCY(byte)

Ԃ͂ȂɓB




[SHADSetFloat "strings",p1]
"strings"   :   gpgpu.fx̕ϐ̖O
p1   :   [IN] float^ϐ
p1̓f[^\Af[^^Ƃfloat^łȂƂȂB

Ԃ͂ȂɓB



[SHADSetInt "strings",p1]
"strings"   :   gpgpu.fx̕ϐ̖O
p1   :   [IN] int^ϐ
p1̓f[^\Af[^^Ƃint^łȂƂȂB

Ԃ͂ȂɓB




[SHADPresent]
SHADCallUserShader߂番ꂽ߁B
SHADCallUserShader[vĎgpĂꍇȂǂꂪI[o[wbhƂȂ邽߁ASHADPresent𕪗邱ƂŃ[v̍Ōɒu悤ɂȂB

ɍxȕׂGPUɂĂ鎞AfBXvC\̏ԂɍȂƉʂĂ܂B



[GetDevInfo p1,p2]
p1 : [OUT] ϐ   :   int
p2 : [IN] ϐ܂́Al
foCX̗lXȔ\͂̏擾B
p2Ŏw肵lȉ̎Ap1ɐlB

0 : 쐬łeNX`̍őxTCYp1ɑB
1 : 쐬łeNX`̍őyTCYp1ɑB
2 : 쐬łeNX`̍őzTCYp1ɑB
3 : 쐬eNX`x,yTCY2̗ݏłȂ΂Ȃꍇ1AǂȃTCYłꍇ0p1ɓBO҂͌ÂOtBbNJ[hŌB
4 : foCXA{[ eNX`T|[gꍇ0łȂꍇ1p1ɑB
5 : {[ eNX` }bṽfBW2 ̗ݏŎw肳Ȃ΂ȂȂꍇ1Avȏꍇ0B
6 : _O ^[Qbg̐B1 ȏłȂ΂ȂȂB
7 : sł钸_VF[_߂̍ő吔B
8 : słsNZVF[_߂̍ő吔B
9 : T|[g钸_VF[_̖߃Xbg̍ő吔Bݒłő吔 32768Bvs_3_0 T|[gfoCX́AȂƂ 512 ̖߃XbgT|[głȂ΂ȂȂB
10: T|[gsNZ VF[_̖߃Xbg̍ő吔Bݒłő吔 32768Bvs_3_0 T|[gfoCX́AȂƂ 512 ̖߃XbgT|[głȂ΂ȂȂB

Ԃ͂ȂɓB



[SHADsetFVF p1,p2,p3,p4]
p1 : [IN] ϐ܂́Al   :   float
p2 : [IN] ϐ܂́Al   :   float
p3 : [IN] ϐ܂́Al   :   float
p4 : [IN] ϐ܂́Al   :   float
o[ebNXVF[_ɑWȈՓIɐݒ肵܂B
sNZVF[_[sɏo͈͂͂w肵܂Biʏ͉ʑŚ͈j
p1͍W
p2͉EW
p3͍W
p4͉EW
W0.0`1.0܂ł32bit_(float)Ŏw肵܂B
͈͂̓sNZwłȂ̂Ŋۂߌ덷ȂǂɂhbgɒӂĂB



[SHADbye]
ׂẴeNX`B
ӂĂIɉB




tH[}bg
ȉ̑SĂg킯ł͂ȂB
D3DFMT_A8R8G8B8D3DFMT_A16B16G16R16FAD3DFMT_A32B32G32R32F
W[ȃtH[}bgłقƂǂ̊œ̂ł𒆐SɎgƂB

#const     D3DFMT_UNKNOWN                 0
#const     D3DFMT_R8G8B8                 20
#const     D3DFMT_A8R8G8B8               21
#const     D3DFMT_X8R8G8B8               22
#const     D3DFMT_R5G6B5                 23
#const     D3DFMT_X1R5G5B5               24
#const     D3DFMT_A1R5G5B5               25
#const     D3DFMT_A4R4G4B4               26
#const     D3DFMT_R3G3B2                 27
#const     D3DFMT_A8                     28
#const     D3DFMT_A8R3G3B2               29
#const     D3DFMT_X4R4G4B4               30
#const     D3DFMT_A2B10G10R10            31
#const     D3DFMT_A8B8G8R8               32
#const     D3DFMT_X8B8G8R8               33
#const     D3DFMT_G16R16                 34
#const     D3DFMT_A2R10G10B10            35
#const     D3DFMT_A16B16G16R16           36
#const     D3DFMT_A8P8                   40
#const     D3DFMT_P8                     41
#const     D3DFMT_L8                     50
#const     D3DFMT_A8L8                   51
#const     D3DFMT_A4L4                   52
#const     D3DFMT_V8U8                   60
#const     D3DFMT_L6V5U5                 61
#const     D3DFMT_X8L8V8U8               62
#const     D3DFMT_Q8W8V8U8               63
#const     D3DFMT_V16U16                 64
#const     D3DFMT_A2W10V10U10            67
#const     D3DFMT_D16_LOCKABLE           70
#const     D3DFMT_D32                    71
#const     D3DFMT_D15S1                  73
#const     D3DFMT_D24S8                  75
#const     D3DFMT_D24X8                  77
#const     D3DFMT_D24X4S4                79
#const     D3DFMT_D16                    80
#const     D3DFMT_L16                    81
#const     D3DFMT_D32F_LOCKABLE          82
#const     D3DFMT_D24FS8                 83
#const     D3DFMT_D32_LOCKABLE           84
#const     D3DFMT_S8_LOCKABLE            85
#const     D3DFMT_VERTEXDATA             100
#const     D3DFMT_INDEX16                101
#const     D3DFMT_INDEX32                102
#const     D3DFMT_Q16W16V16U16           110
#const     D3DFMT_R16F                   111
#const     D3DFMT_G16R16F                112
#const     D3DFMT_A16B16G16R16F          113
#const     D3DFMT_R32F                   114
#const     D3DFMT_G32R32F                115
#const     D3DFMT_A32B32G32R32F          116
#const     D3DFMT_CxV8U8                 117
#const     D3DFMT_A1                     118
#const     D3DFMT_A2B10G10R10_XR_BIAS    119
#const     D3DFMT_BINARYBUFFER           199



G[R[h
G[R[hi[ĂuSHAD_STAT_ERROR_STR_ARRAYv̒ǵ
SHAD_STAT_ERROR_STR_ARRAY="D3D_OK","D3DOK_NOAUTOGEN","D3DERR_CONFLICTINGRENDERSTATE","D3DERR_CONFLICTINGTEXTUREFILTER","D3DERR_CONFLICTINGTEXTUREPALETTE","D3DERR_DEVICELOST","D3DERR_DEVICENOTRESET","D3DERR_DRIVERINTERNALERROR","D3DERR_INVALIDCALL","D3DERR_INVALIDDEVICE","D3DERR_MOREDATA","D3DERR_NOTAVAILABLE","D3DERR_NOTFOUND","D3DERR_OUTOFVIDEOMEMORY","D3DERR_TOOMANYOPERATIONS","D3DERR_UNSUPPORTEDALPHAARG","D3DERR_UNSUPPORTEDALPHAOPERATION","D3DERR_UNSUPPORTEDCOLORARG","D3DERR_UNSUPPORTEDCOLOROPERATION","D3DERR_UNSUPPORTEDFACTORVALUE","D3DERR_UNSUPPORTEDTEXTUREFILTER","D3DERR_WRONGTEXTUREFORMAT","E_FAIL","E_INVALIDARG","E_INVALIDCALL","E_OUTOFMEMORY","S_OK"

ȉG[ڍׁB

D3D_OK
G[͔ĂȂB
D3DOK_NOAUTOGEN
͐R[hłBÃtH[}bgɑ΂~bv}bv̎̓T|[gĂȂB́A\[X쐬͐邪A~bv}bv x͎ȂƂӖB
D3DERR_CONFLICTINGRENDERSTATE
ݐݒ肳Ă郌_O Xe[g͓ɂ͎gȂB
D3DERR_CONFLICTINGTEXTUREFILTER
݂̃eNX` tB^͓ɂ͎gȂB
D3DERR_CONFLICTINGTEXTUREPALETTE
݂̃eNX`͓ɂ͎gȂB
D3DERR_DEVICELOST
foCX́AĂ邪A݃ZbgłȂBāA_O͕s\łB
D3DERR_DEVICENOTRESET
foCX́AĂ邪A݃ZbgłB
D3DERR_DRIVERINTERNALERROR
hCo G[B̃G[󂯎ꍇAAvP[V͈ʂɃVbg_EȂ΂ȂȂBڍׂɂẮAuhCo̓G[vQƂ邱ƁB
D3DERR_INVALIDCALL
\bȟĂяołBƂ΁A\bh̃p[^Lȃ|C^ł͂ȂB
D3DERR_INVALIDDEVICE
vꂽfoCX̎ނłB
D3DERR_MOREDATA
w肳ꂽobt@ TCYɕێłȏ̃f[^݂B
D3DERR_NOTAVAILABLE
̃foCX́AƉꂽeNjbNT|[gĂȂB
D3DERR_NOTFOUND
vꂽڂȂB
D3DERR_OUTOFVIDEOMEMORY
Direct3D ŝɏ\ȃfBXvC ifoCXjȂB
D3DERR_TOOMANYOPERATIONS
foCXT|[gĂ鐔葽̃eNX` tB^OAAvP[VvĂB
D3DERR_UNSUPPORTEDALPHAARG
At@ `lɑ΂Ďw肳ĂeNX` ufBOAfoCXT|[gĂȂB
D3DERR_UNSUPPORTEDALPHAOPERATION
At@ `lɑ΂Ďw肳ĂeNX` ufBOAfoCXT|[gĂȂB
D3DERR_UNSUPPORTEDCOLORARG
Flɑ΂Ďw肳ĂeNX` ufBOAfoCXT|[gĂȂB
D3DERR_UNSUPPORTEDCOLOROPERATION
Flɑ΂Ďw肳ĂeNX` ufBOAfoCXT|[gĂȂB
D3DERR_UNSUPPORTEDFACTORVALUE
foCXw肳ꂽeNX`WlT|[gĂȂB
D3DERR_UNSUPPORTEDTEXTUREFILTER
foCXw肳ꂽeNX` tB^T|[gĂȂB
D3DERR_WRONGTEXTUREFORMAT
eNX` T[tFCX̃sNZ tH[}bgłB
E_FAIL
Direct3D TuVXeŌs̃G[B
E_INVALIDARG
ȃp[^֐ɓnꂽB
E_INVALIDCALL
\bȟĂяołBƂ΁A\bh̃p[^ɖȒlݒ肳ĂꍇȂǂłB
E_OUTOFMEMORY
Direct3D Ăяo邽߂̏\ȃizXgj蓖Ă邱ƂłȂB
S_OK
G[͔ĂȂB


zzꏊ
http://blog.livedoor.jp/toropippi/
A
http://blog.livedoor.jp/toropippi/̃bZ[WMy[W
Ɛ

쌠
쌠́ApippiۗL܂B

XV
    Ver 1.0
	2012/11/26
	uSHADCPUtoGPUv
	uSHADGPUtoCPUv
	uSHADiniv
	uSHADCallUserShaderv
	̖ߒǉ

    Ver 1.1
	2013/1/2
	HSP玩RGPUobt@쐬\ƂȂ
	uSHADCreateRenderTargetTexturev
	uSHADShaderConstUserTexv
	uSHADGetRenderTargetDatav
	uSHADbyev
	ߒǉ

    Ver 1.2
	2013/1/3
	D3DFMT_A32B32G32R32FȊÕtH[}bgɂΉ
	uSHADGetRenderTargetDatavubuffercopyvɕύXBԃobt@Ƃ̂閽߂ɁB
	uSHADCPUtoGPUv̍
	uSHADGPUtoCPUv̍
	uSHADCPUtoGPUvumcpyCPUtoGPUv
	uSHADGPUtoCPUvumcpyGPUtoCPUv
	uDataGATAChangevߒǉ
	Cӂ̑傫̃obt@悤

    Ver 1.3
	2013/1/4
	HLSLGtFNgt@C̐ݒ\ϐǉ
	uSHADSetFloatv
	uSHADSetIntv
	ߒǉ

    Ver 1.4
	2013/1/6
	G[bZ[WpuSHAD_STAT_ERROR_STR_ARRAYvǉ
	eNX`߁uTexReleasevǉ
	쐬eNX`̏擾uGetTexInfovǉ

    Ver 1.5
	2013/1/19
	SHADCallUserShader̃I[o[wbĥߓ̈ꕔ폜uSHADPresentv߂ǉASHADCallUserShader1000{
	uGetDevInfovߒǉB
	_O\ɁBɔuSHADCallUserShaderv̈𑝉